﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace TangoFamilyAndGuide.Site
{
    public partial class AlojamientoGuide : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //DiaDropDownList.DataSource = Entidades.DiasDeLaSemana.Dias.ListaMasSinInformar();
                VistaRadioButton_CheckedChanged(Vista1RadioButton, new EventArgs());
                DataBind();
            }
        }
        protected void BuscarButton_Click(object sender, EventArgs e)
        {
            BindPagingGrid();
        }
        protected void ClearButton_Click(object sender, EventArgs e)
        {
            DireccionTextBox.Text = "";
            PaisTextBox.Text = "";
            ProvinciaTextBox.Text = "";
            LocalidadTextBox.Text = "";
        }
        protected void NewButton_Click(object sender, EventArgs e)
        {
            if (Funciones.SessionTimeOut(Session))
            {
                Response.Redirect("~/UsuarioLogin.aspx");
            }
            else
            {
                Response.Redirect("~/AlojamientoCrear.aspx");
            }
        }
        private void BindPagingGrid()
        {
            try
            {
                int CantidadFilas = 0;
                List<Entidades.Alojamiento> lista = new List<Entidades.Alojamiento>();
                if (Vista1RadioButton.Checked == true)
                {
                    lista = RN.Alojamiento.Lista(out CantidadFilas, AlojamientoPagingGridView.PageIndex, AlojamientoPagingGridView.PageSize, AlojamientoPagingGridView.OrderBy, DireccionTextBox.Text, PaisTextBox.Text, ProvinciaTextBox.Text, LocalidadTextBox.Text, "",  Session.SessionID, (Entidades.Sesion)Session["Sesion"]);
                    AlojamientoPagingGridView.VirtualItemCount = CantidadFilas;
                    ViewState["lista"] = lista;
                    //Grilla
                    AlojamientoPagingGridView.DataSource = (List<Entidades.Alojamiento>)ViewState["lista"];
                    AlojamientoPagingGridView.DataBind();
                }
                else
                {
                    lista = RN.Alojamiento.ListaCompleta(out CantidadFilas, "", DireccionTextBox.Text, PaisTextBox.Text, ProvinciaTextBox.Text, LocalidadTextBox.Text, "", Session.SessionID, (Entidades.Sesion)Session["Sesion"]);

                    string[] archivos = LeerImagenesPortada();
                    for (int i = 0; i < archivos.Length; i++)
                    {
                        string fileName = System.IO.Path.GetFileNameWithoutExtension(archivos[i]);
                        string[] resultado = fileName.Split(Convert.ToChar("-"));
                        if (resultado.Length > 1)
                        {
                            try 
                            {
                                int idAlojamiento = Convert.ToInt32(resultado[1].ToString());
                                Entidades.Alojamiento alojamiento = lista.Find(delegate(Entidades.Alojamiento m)
                                {
                                    return m.Id == idAlojamiento;
                                });
                                if (alojamiento != null)
                                {
                                    alojamiento.NombreImagenPortada = System.IO.Path.GetFileName(archivos[i]);
                                }
                            }
                            catch { }
                        }
                    }
                    ViewState["lista"] = lista;
                    //ListView
                    AlojamientoListView.DataSource = (List<Entidades.Alojamiento>)ViewState["lista"];
                    AlojamientoListView.DataBind();
                }
            }
            catch (System.Threading.ThreadAbortException)
            {
                Trace.Warn("Thread abortado");
            }
        }
        private string[] LeerImagenesPortada()
        {
            Entidades.Sesion sesion = (Entidades.Sesion)Session["Sesion"];
            Entidades.Alojamiento alojamiento = (Entidades.Alojamiento)Session["Alojamiento"];
            String path = Server.MapPath("~/ImagenesAlojamiento/Portada/");
            string[] archivos = System.IO.Directory.GetFiles(path, "*.*", System.IO.SearchOption.TopDirectoryOnly);
            return archivos;
        }
        protected void AlojamientoPagingGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            try
            {
                DesSeleccionarFilas();
                AlojamientoPagingGridView.PageIndex = e.NewPageIndex;
                List<Entidades.Alojamiento> lista;
                int CantidadFilas = 0;
                lista = RN.Alojamiento.Lista(out CantidadFilas, AlojamientoPagingGridView.PageIndex, AlojamientoPagingGridView.PageSize, AlojamientoPagingGridView.OrderBy, DireccionTextBox.Text, PaisTextBox.Text, ProvinciaTextBox.Text, LocalidadTextBox.Text, "", Session.SessionID, (Entidades.Sesion)Session["Sesion"]);
                AlojamientoPagingGridView.VirtualItemCount = CantidadFilas;
                ViewState["lista"] = lista;
                AlojamientoPagingGridView.DataSource = lista;
                AlojamientoPagingGridView.DataBind();
            }
            catch (System.Threading.ThreadAbortException)
            {
                Trace.Warn("Thread abortado");
            }
            catch (Exception ex)
            {
                //CedeiraUIWebForms.Excepciones.Redireccionar(ex, "~/Excepcion.aspx");
                MensajeLabel.Text = ex.Message;
            }
        }
        protected void AlojamientoPagingGridView_Sorting(object sender, GridViewSortEventArgs e)
        {
            try
            {
                DesSeleccionarFilas();
                List<Entidades.Alojamiento> lista = new List<Entidades.Alojamiento>();
                int CantidadFilas = 0;
                lista = RN.Alojamiento.Lista(out CantidadFilas, AlojamientoPagingGridView.PageIndex, AlojamientoPagingGridView.PageSize, AlojamientoPagingGridView.OrderBy, DireccionTextBox.Text, PaisTextBox.Text, ProvinciaTextBox.Text, LocalidadTextBox.Text, "", Session.SessionID, (Entidades.Sesion)Session["Sesion"]);
                ViewState["lista"] = lista;
                AlojamientoPagingGridView.DataSource = (List<Entidades.Alojamiento>)ViewState["lista"];
                AlojamientoPagingGridView.DataBind();
            }
            catch (System.Threading.ThreadAbortException)
            {
                Trace.Warn("Thread abortado");
            }
            catch (Exception ex)
            {
                //CedeiraUIWebForms.Excepciones.Redireccionar(ex, "~/Excepcion.aspx");
                MensajeLabel.Text = ex.Message;
            }
        }
        protected void AlojamientoPagingGridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Attributes["onmouseover"] = "this.style.cursor='hand';this.style.textDecoration='underline';";
                e.Row.Attributes["onmouseout"] = "this.style.textDecoration='none';";
                //e.Row.Attributes["onclick"] = ClientScript.GetPostBackClientHyperlink(this.AlojamientoPagingGridView, "Select$" + e.Row.RowIndex);
            }
        }
        private void DesSeleccionarFilas()
        {
            AlojamientoPagingGridView.SelectedIndex = -1;
        }

        protected void AlojamientoPagingGridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "Detail":
                    int item = Convert.ToInt32(e.CommandArgument);
                    List<Entidades.Alojamiento> lista = (List<Entidades.Alojamiento>)ViewState["lista"];
                    Entidades.Alojamiento alojamiento = lista[item];
                    Session["Alojamiento"] = alojamiento;
                    Response.Redirect("~/AlojamientoGuideConsultaDetallada.aspx");
                    break;
            }
        }

        //protected void Button_Click(object sender, EventArgs e)
        //{
        //    Button btn = (Button)sender;
        //    string CommandName = btn.CommandName;
        //    string CommandArgument = btn.CommandArgument;
        //}

        protected void AlojamientoPagingGridView_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void AlojamientoPagingGridView_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {

        }

        protected void AlojamientoListView_PagePropertiesChanging(object sender, PagePropertiesChangingEventArgs e)
        {
            //set current page startindex, max rows and rebind to false
            DataPager1.SetPageProperties(e.StartRowIndex, e.MaximumRows, false);

            AlojamientoListView.DataSource = (List<Entidades.Alojamiento>)ViewState["lista"];
            AlojamientoListView.DataBind();
        }

        protected void VistaRadioButton_CheckedChanged(object sender, EventArgs e)
        {
            if (Vista1RadioButton.Checked == true)
            {
                PanelPagingGridView.Visible = true;
                PanelListView.Visible = false;
                BindPagingGrid();
            }
            else
            {
                PanelPagingGridView.Visible = false;
                PanelListView.Visible = true;
                BindPagingGrid();
            }
        }

        protected void lportada_Click(object sender, EventArgs e)
        {

            int item = Convert.ToInt32(((LinkButton)sender).CommandArgument);
            List<Entidades.Alojamiento> lista = (List<Entidades.Alojamiento>)ViewState["lista"];
            Entidades.Alojamiento alojamiento = lista.Find(delegate(Entidades.Alojamiento m)
            {
                return m.Id == item;
            });
            Session["Alojamiento"] = alojamiento;
            Response.Redirect("~/AlojamientoGuideConsultaDetallada.aspx");
        }
    }
}